<?php
Yii::import('application.core.buscar_registro.Buscar_Usuario');
Yii::import('application.core.buscar_registro.Buscar_Empleado');
Yii::import('application.core.buscar_registro.Buscar_pedido');
Yii::import('application.core.buscar_registro.Buscar_Lista_Empleados');


class Modificar_Pedido{

private $pedido;
private $usuario;
private $empleado;

private $empleados;
private $nueva_fecha_pedido;
private $nueva_hora_pedido;
private $sucursal;
private $especialidad;
private $prioridad;
private $detalles;

//__________________INICIAR MODIFICACION________________________________

	public function __construct($id_busqueda, $tipo_de_dato, $fecha_pedido, $hora_pedido=null){
		if($tipo_de_dato=="nro_pedido"){
			$busqueda=new Buscar_pedido($id_busqueda, $tipo_de_dato, $fecha_pedido, $hora_pedido);
			$this->pedido=$busqueda->get_pedido_encontrado();
			if(isset($this->pedido)){
				$busqueda_usuario=new Buscar_Usuario($this->pedido->get_nro_usuario(), 'nro_usuario');
				$this->usuario=$busqueda_usuario->get_usuario_encontrado();
				$busqueda_empleado=new Buscar_Empleado($this->pedido->get_nro_empleado(), 'nro_empleado');
				$this->empleado=$busqueda_empleado->get_empleado_encontrado();
			}
		}else{
			$busqueda_usuario=new Buscar_Usuario($id_busqueda, $tipo_de_dato);
			$this->usuario=$busqueda_usuario->get_usuario_encontrado();
			$busqueda_pedido=new Buscar_pedido($this->usuario->get_nro_usuario(), "nro_usuario", $fecha_pedido, $hora_pedido);
			$this->pedido=$busqueda_pedido->get_pedido_encontrado();
			if(isset($this->pedido)){
				$busqueda_empleado=new Buscar_Empleado($this->pedido->get_nro_empleado(), 'nro_empleado');
				$this->empleado=$busqueda_empleado->get_empleado_encontrado();
			}
		}
	}

	public function get_usuario(){
		return $this->usuario;
	}

	public function get_empleado(){
		return $this->empleado;
	}
	
	public function get_pedido(){
		return $this->pedido;
	}


//__________________COMENZAR MODIFICACION_______________________________
	
	public function set_cambios($nueva_fecha_pedido, $nueva_hora_pedido, $especialidad, $prioridad,$detalles,$config, $otraSucursal){
		if ($otraSucursal==0){
			$this->sucursal=$config->get_sucursal();
		}elseif ($otraSucursal!=0) {
			$this->sucursal=$config->get_otra_sucursal($otraSucursal);
		}
		
		$this->nueva_fecha_pedido=$nueva_fecha_pedido;
		$this->nueva_hora_pedido=$nueva_hora_pedido;
		$this->especialidad=$especialidad;
		$this->prioridad=$prioridad;
		$this->detalles=$detalles;
		$direccion_usuario=$this->usuario->get_coordenadas_usuario();
		
		$this->buscar_nuevo_empleado($direccion_usuario , $nueva_fecha_pedido, $nueva_hora_pedido, $especialidad, $prioridad, $config, $this->sucursal);
	}
	
	public function get_lista_empleados(){
		return $this->empleados;
	}


//__________________CONFIRMAR MODIFICAR_________________________________

	public function confirmar($nuevo_empleado,$detalles_del_cambio){
	  	$empleado=$this->empleados[$nuevo_empleado];
	  	$conexion=Yii::app()->db;
	  	if (mysqli_connect_errno()) {
	  		echo "Failed to connect to MySQL: " . mysqli_connect_error();
	  	} else{
	  		$nro_prox_pedido=$this->generar_numero_pedido($conexion); //genera numero para el pedido	
	  		$consulta="INSERT INTO pedidos(nro_pedido, nro_usuario, nro_empleado, fecha_pedido, hora_pedido, prioridad, estado, detalles, sucursal)
			Values('".$nro_prox_pedido."','".$this->usuario->get_nro_usuario()."','".$empleado->get_nro_empleado().
	  		"',STR_TO_DATE(REPLACE('".$this->nueva_fecha_pedido."','/','.') ,GET_FORMAT(date,'EUR')),'
	  		".$this->nueva_hora_pedido."','".$this->prioridad."', 'pendiente', '$this->detalles' , $this->sucursal)";
	  		$conexion->createCommand($consulta)->execute();
	  		$nuevo_detalle=$detalles_del_cambio."/".$this->pedido->get_detalles();
	  		$consulta= "UPDATE pedidos SET estado='modificado', detalles='.$nuevo_detalle' WHERE nro_pedido=".$this->pedido->get_nro_pedido();
	  		$conexion->createCommand($consulta)->execute();
	  		$this->notificar();
	  		return $nro_prox_pedido;
	  	}
	}
	

//________METODOS PRIVADOS__________ 

	private function buscar_nuevo_empleado($direccion_usuario , $fecha_pedido, $hora_pedido, $especialidad, $prioridad, $config, $sucursal){
		$busqueda= new Buscar_Lista_Empleados($direccion_usuario, $fecha_pedido, $hora_pedido, $especialidad, $prioridad, $config, $sucursal);
		$this->empleados=$busqueda->get_empleados_disponibles();	
	}

	private function generar_numero_pedido($conexion){
		$datonumero=$conexion->createCommand("SELECT MAX(nro_pedido) as nro_pedido FROM pedidos");
		$datos=$datonumero->query();
		foreach($datos as $dato){
			$nro_prox_empleado=$dato['nro_pedido']+1;
			return $nro_prox_empleado ;
		}
	}
	
	private function notificar(){
	
	}
}
?>